N,k=map(int,input().split())

a=[]
for i in range(N):
    x,y=map(int,input().split())
    a.append((x,y))

# 合法判断：假定切出的巧克力边长为x,能否切出k块
def check(x):
    # cnt表示能够切出的块数
    cnt=0
    for H,W in a:
        cnt+=(H//x)*(W//x)
    return cnt>=k

# 边长搜索区间为[left,right]
left,right=1,100000

# 切出最大的边长
ans=1
while left<right:
    mid=(left+right)//2
    if check(mid):
        ans=mid
        # 求最大值：[mid+1,right]
        left=mid+1
    else:
        right=mid-1


print(ans)
